package main
import (
	"fmt"
	"time"
)

/**
	select功能:解决多个管道的选择问题，也可以叫做多路复用，
	可以从多个管道中随机公平地选择一个来执行1case后面必须进行的是io操作，不能是等值，随机去选择一个io操作
	default防止select被阳寒住，加入default
**/
func main() {
	selectTest()
}

func selectTest() {
	intChan := make(chan int, 1)
	go func(){
		time.Sleep(1*time.Second)
		
		intChan <- 1
	}()

	strChan := make(chan string, 1)
	go func(){
		time.Sleep(2*time.Second)		
		strChan <- "hello"
	}()

	// 本身取数据就是堵塞的
	//fmt.Println( <- intChan )
	select{
		case i := <- intChan:
			fmt.Println("intChan结果： ", i)
		case s := <- strChan:
			fmt.Println("strChan结果：", s)
		default: // 防止select被阳寒住
			fmt.Println("default")
	}
}